In a typical computer graphics system, an object to be represented on a display screen is broken down into graphics primitives. Graphics primitives are basic geometric elements such as points, lines, vectors, triangles and quadrilaterals. Computer graphics systems use graphics primitives in combination to represent more complex shapes. A typical system for generating and displaying graphics primitives might include a host processor, application and system/driver software running on the host processor, and a specialized subsystem of graphics processing hardware that is controlled by the software running on the host processor.
Many mathematical operations are necessary to process and display graphics primitives. In lower-end computer systems, most of those operations are performed by the host processor. In such lower-end systems, only a simple set of operations need be performed by the graphics subsystem in order to display the graphics information produced by the host processor. In higher-end computer systems, however, better performance is achieved by providing a graphics subsystem that has the capacity to perform many of the mathematical operations that, in lower-end systems, must be performed by the host processor. In such higher-end systems, the host processor may generate graphics information at a fairly abstract level. The host processor then relies on "graphics accelerator" hardware in the graphics subsystem to reduce the abstract information to simpler forms more suitable for downstream operations such as rasterization and storage in a frame buffer memory. In this manner, tasks are off loaded from the host processor, thereby saving host processor bandwidth for higher-level operations.
Graphics primitives vary as to the number and type of computations necessary to process them. For example, primitives may be generated by the host processor for display in a non-positional lighting mode, so that the graphics accelerator need only do cursory lighting operations along with the usual clipping, plane equation and transformation operations necessary for each primitive. On the other hand, primitives may be generated by the host processor for display in a positional lighting mode, so that the graphics accelerator must perform numerous additional and more complex lighting calculations along with the usual clipping, plane equation and transformation operations necessary for each primitive. Consequently, it would be a desirable feature in a graphics processor to have more than one processing unit to increase throughput. It would also be desirable if the processing units were reconfigurable so that their processing power could be utilized effectively for a variety of different types of primitives. Moreover, it has been found to be advantageous to arrange graphics processors in a graphics pipeline, so that the various operations necessary to process graphics primitives may be performed in a more-or-less assembly line fashion by different pieces of specialized hardware.
One of the difficulties in the design of such a graphics subsystem is that not all of the information traveling through the graphics pipeline is destined for, or must be processed by, every piece of hardware in the pipeline. Thus, some mechanism must be provided to allow such "pass-through" information to reach its proper destination in the graphics pipeline efficiently, albeit in the proper order vis-a-vis other information in the pipeline.
It is therefore an object of the present invention to provide a method and apparatus for handling pass-through information effectively in a high-perfornance computer graphics processor.